package entidades.politica;

import java.util.ArrayList;
import java.util.Random;

import util.exceptions.NaoExistemPeersSuficientesParaSeFazerTroca;

import entidades.Peer;

public class PoliticaSelecaoVizinhosRandomica extends PoliticaSelecaoVizinhos {

	public PoliticaSelecaoVizinhosRandomica(ArrayList<Peer> listaPeers) {
		super(listaPeers);
	}

	@Override
	public Peer seleciona(Peer peerOrigem) throws NaoExistemPeersSuficientesParaSeFazerTroca {
		if (listaPeers.isEmpty() || listaPeers.size() == 1) {
			throw new NaoExistemPeersSuficientesParaSeFazerTroca();
		}
		
		super.listaPeers.remove(peerOrigem);
		
		Random random = new Random();
		int pos = random.nextInt(listaPeers.size());
		
		super.listaPeers.add(peerOrigem);
		
		return listaPeers.get(pos);
	}
	
	@Override
	public Peer seleciona() throws NaoExistemPeersSuficientesParaSeFazerTroca {
		if (listaPeers.isEmpty()) {
			throw new NaoExistemPeersSuficientesParaSeFazerTroca();
		}
		
		Random random = new Random();
		int pos = random.nextInt(listaPeers.size());
		
		return listaPeers.get(pos);
	}
}
